是UIView的subclass,展現資料在一個Table裡
通常會是動態資料
通常會擺靜態的就都不變
可以放你想放的UIView在裡頭像是範例中的TextField
var tableHeaderView : UIView
跟Header差不多
var tableFooterView : UIView
通常是string也可以是其他uiview
一樣section也是有footer的
每個section row 的數量不同
是UIView的subclass叫做UITableViewCell
Cell 有四種Style
99%的情況會使用UITableViewController
如果你拉出來到StoryBoard,階層裡的view會直間變成TableView
delegate跟datasources都設置好了(如果你是直接拉UITableViewController出來的話)
像是樣板,不同樣板展顯不同內容
系統會重新使用它們來展示你的資料
Custom Cell不能直接與UITableViewController hook
因為可能會有上百個 cell
你必須建立一個UITableViewCell的subclass然後把layout hook上
New File > subclassOf - UITableViewCell >Identity inspector Class - 你的new custom cell
Delegate
控制TableView要怎麼顯示
DataSources
控制有什麼資料在TableView裡
三個比較重要的
1.有幾個Section?
預設是1,所以你不打他是1
override func numberOfSections(in tableView: UITableView) -> Int {
return 0
}
2.有幾個Row在個別的Section?
這個就是必須的
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 0
}
3.給我一個UITabeViewCell subclass好畫出這個Row
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
// Configure the cell...
return cell
}
plus. RowAction
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
呼叫這行
tableView.reloadData()
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
//設定高度
}